﻿Public Class InsertarResultados

    Dim bd As BaseDatos
    Dim setGanadosEq1 As Integer = 0
    Dim setGanadosEq2 As Integer = 0
    Dim puntosEq1 As Integer = 0
    Dim puntosEq2 As Integer = 0

    Private Sub InsertarResultados_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        bd = New BaseDatos()
        TbNombre1.Text = GestionPartidos.GNombreEquipo1
        TbNombre2.Text = GestionPartidos.GNombreEquipo2
    End Sub

    Private Sub BtAceptar_Click(sender As Object, e As EventArgs) Handles BtAceptar.Click
        If comprobarResultado(CInt(TbSet1L.Text), CInt(TbSet1V.Text)) And
            comprobarResultado(CInt(TbSet2L.Text), CInt(TbSet2V.Text)) And
            comprobarResultado(CInt(TbSet3L.Text), CInt(TbSet3V.Text)) Then
            bd.InsertarModificarBorrar("Update Partidos set Set1 = " & TbSet1L.Text & ", Set2 = " & TbSet2L.Text & ", Set3 = " & TbSet3L.Text & _
                                       " where IdTorneo = " & FormEntrada.CampeonatoActivo & " and IdEquipo = " & GestionPartidos.GIdEquipo1 & _
                                       " and Id = " & GestionPartidos.GIdPartido & ";")
            bd.InsertarModificarBorrar("Update Partidos set Set1 = " & TbSet1V.Text & ", Set2 = " & TbSet2V.Text & ", Set3 = " & TbSet3V.Text & _
                                       " where IdTorneo = " & FormEntrada.CampeonatoActivo & " and IdEquipo = " & GestionPartidos.GIdEquipo2 & _
                                       " and Id = " & GestionPartidos.GIdPartido & ";")
            DatosEquipos()
            ActualizarClasificaion()
            Me.Visible = False
            GestionPartidos.CargarDatos()
        Else
            MsgBox("Los datos introducidos no son correctos.")
        End If
    End Sub

    Private Sub BtCancelar_Click(sender As Object, e As EventArgs) Handles BtCancelar.Click
        Me.Visible = False
    End Sub

    Private Sub DatosEquipos()
        If CInt(TbSet1L.Text) >= 6 Then
            setGanadosEq1 += 1
        End If
        If CInt(TbSet2L.Text) >= 6 Then
            setGanadosEq1 += 1
        End If
        If CInt(TbSet3L.Text) >= 6 Then
            setGanadosEq1 += 1
        End If
        If CInt(TbSet1V.Text) >= 6 Then
            setGanadosEq2 += 1
        End If
        If CInt(TbSet2V.Text) >= 6 Then
            setGanadosEq2 += 1
        End If
        If CInt(TbSet3V.Text) >= 6 Then
            setGanadosEq2 += 1
        End If

        If setGanadosEq1 > setGanadosEq2 Then
            puntosEq1 = 3
            If CInt(TbSet1V.Text) < 0 Then
                puntosEq2 = -3
            Else
                puntosEq2 = 0
            End If
        Else
            puntosEq2 = 3
            If CInt(TbSet1L.Text) < 0 Then
                puntosEq1 = -3
            Else
                puntosEq1 = 0
            End If
        End If

    End Sub

    Private Sub ActualizarClasificaion()
        If ComprobarExisteEquipo(GestionPartidos.GIdEquipo1) Then
            'update de los setganados, setperdidos y totalpuntos para idTorneo e IdEquipo
            bd.InsertarModificarBorrar("Update TemporalClasificacion set SetGanados = SetGanados + " & setGanadosEq1 & _
                                       ", SetPerdidos = SetPerdidos + " & 3 - setGanadosEq1 & _
                                       ", TotalPuntos = TotalPuntos + " & puntosEq1 & _
                                       " where IdTorneo = " & FormEntrada.CampeonatoActivo & " and IdEquipo = " & GestionPartidos.GIdEquipo1 & ";")
        Else
            'insert(IdTorneo, IdEquipo, NombreEquipo, SetGanados, SetPerdidos, TotalPuntos)
            bd.InsertarModificarBorrar("Insert into TemporalClasificacion(IdTorneo, IdEquipo, NombreEquipo, SetGanados, SetPerdidos, TotalPuntos) " & _
            " values(" & FormEntrada.CampeonatoActivo & ", " & GestionPartidos.GIdEquipo1 & ", '" & _
            GestionPartidos.GNombreEquipo1 & "', " & setGanadosEq1 & ", " & 3 - setGanadosEq1 & ", " & puntosEq1 & ");")
        End If

        If ComprobarExisteEquipo(GestionPartidos.GIdEquipo2) Then
            'update de los setganados, setperdidos y totalpuntos para idTorneo e IdEquipo
            bd.InsertarModificarBorrar("Update TemporalClasificacion set SetGanados = SetGanados + " & setGanadosEq2 & _
                                       ", SetPerdidos = SetPerdidos + " & 3 - setGanadosEq2 & _
                                       ", TotalPuntos = TotalPuntos + " & puntosEq2 & _
                                       " where IdTorneo = " & FormEntrada.CampeonatoActivo & " and IdEquipo = " & GestionPartidos.GIdEquipo2 & ";")
        Else
            'insert(IdTorneo, IdEquipo, NombreEquipo, SetGanados, SetPerdidos, TotalPuntos)
            bd.InsertarModificarBorrar("Insert into TemporalClasificacion(IdTorneo, IdEquipo, NombreEquipo, SetGanados, SetPerdidos, TotalPuntos) " & _
            " values(" & FormEntrada.CampeonatoActivo & ", " & GestionPartidos.GIdEquipo2 & ", '" & _
            GestionPartidos.GNombreEquipo2 & "', " & setGanadosEq2 & ", " & 3 - setGanadosEq2 & ", " & puntosEq2 & ");")
        End If
    End Sub

    Public Function ComprobarExisteEquipo(ByVal idEquipo As Integer) As Boolean
        Dim listaResultados As List(Of String) = New List(Of String)
        'select para obtener si en la tabla partidos ya existen registros con la id de ese torneo
        listaResultados = bd.Consultar("Select * from TemporalClasificacion where IdEquipo = " & idEquipo & " and IdTorneo = " & _
                                       FormEntrada.CampeonatoActivo & ";", "TemporalClasificacion")
        If listaResultados.Count <= 0 Then
            Return False
        Else
            Return True
        End If
    End Function

    Public Function comprobarResultado(ByRef resultadoSet1L As Integer, ByRef resultadoSet1V As Integer) As Boolean
        Dim resultadoValido As Boolean = False
        If resultadoSet1L > 7 Or resultadoSet1V > 7 Then
            resultadoValido = False
        Else
            Select Case resultadoSet1L <= 7 And resultadoSet1V <= 7
                Case resultadoSet1L = 7 And resultadoSet1V = 5
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 5 And resultadoSet1V = 7
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 7 And resultadoSet1V = 6
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 6 And resultadoSet1V = 7
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 6 And resultadoSet1V = 4
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 4 And resultadoSet1V = 6
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 6 And resultadoSet1V = 3
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 3 And resultadoSet1V = 6
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 6 And resultadoSet1V = 2
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 2 And resultadoSet1V = 6
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 6 And resultadoSet1V = 1
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 1 And resultadoSet1V = 6
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 6 And resultadoSet1V = 0
                    resultadoValido = True
                    Return resultadoValido
                Case resultadoSet1L = 0 And resultadoSet1V = 6
                    resultadoValido = True
                    Return resultadoValido
                Case Else
                    resultadoValido = False
                    Return resultadoValido
            End Select
        End If
        Return resultadoValido
    End Function
End Class